package com.xuecheng.api.content;

import com.xuecheng.api.content.model.dto.TeachplanDTO;
import com.xuecheng.api.content.model.dto.TeachplanMediaDTO;
import com.xuecheng.api.content.model.dto.TeachplanWorkDTO;
import com.xuecheng.api.content.model.vo.BindTeachplanMediaVO;
import com.xuecheng.api.content.model.vo.BindTeachplanWorkVO;
import com.xuecheng.api.content.model.vo.TeachplanVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;

/**
 * Created on 2021/03/31/14:46 周三
 *
 * @author Lantin
 */

@Api("内容-课程计划Api接口")
public interface TeachplanApi {

    @ApiOperation(value = "新增或修改课程计划")
    @ApiImplicitParam(name = "teachplanVO", value = "课程计划VO",
            required = true, dataType = "TeachplanVO", paramType = "body")
    TeachplanDTO createOrModifyTeachPlan(TeachplanVO teachplanVO);

    @ApiOperation(value = "删除课程计划")
    @ApiImplicitParam(name = "teachPlanId", value = "课程计划id",
            required = true, dataType = "Long", paramType = "path")
    boolean deleteTeachPlan(Long teachPlanId);


    @ApiOperation(value = "创建或修改课程计划绑定媒资")
    @ApiImplicitParam(name = "teachplanMediaVO", value = "媒资绑定封装VO",
            required = true, dataType = "BindTeachplanMediaVO", paramType = "body")
    public TeachplanMediaDTO createOrModifyTeachplanMedia(BindTeachplanMediaVO teachplanMediaVO);

    @ApiOperation(value = "创建或修改课程计划绑定作业")
    @ApiImplicitParam(name = "teachplanMediaVO", value = "媒资绑定封装VO",
            required = true, dataType = "BindTeachplanMediaVO", paramType = "body")
    TeachplanWorkDTO createOrModifyTeachplanWork(BindTeachplanWorkVO teachplanWorkVO);


    @ApiOperation(value = "移除课程计划和作业的绑定")
    void removeTeachplanWork(Long teachplanWorkId, Long courseBaseId);

    @ApiOperation(value = "移除课程计划和媒资的绑定")
    void removeTeachplanMedia(Long teachplanWorkId, Long courseBaseId);
}